Registros de presencia

Row

Cantidad total de registros de presencia

20929

Cantidad total de géneros

178

Cantidad total de especies

1418

Row

Tabla de registros de presencia

Gráfico pastel

Mapa Leaflet


Mapa de distribucion

Extras


Gráfico pastel extra

Profe, como en el grafico pastel el campo de “Otras” tiene muchos registros y caso no deja ver a los demas datos, aqui hay un grafico solo con las 10 especies mas representativas de Costa Rica. Muchas gracias

---
title: "Proyecto_02_Visualizacion_de_Orquideas. Sara Alvarado Siles"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    source_code: embed
---

```{r carga-paquetes, message=FALSE, warning=FALSE}
# Carga de paquetes
library(sf)
library(DT)
library(dplyr)
library(leafem)
library(raster)
library(plotly)
library(leaflet)
library(rmapshaper)
library(flexdashboard)
library(leaflet.extras)
```

```{r organizacion}
#-------------------- Colores ---------------------
colores_orquiedas <- "violet"
colores_especies <-"blue"
colores_generos <-"red"

colores_grafico_pastel <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)')

#--------------------- Íconos ---------------------
icono_orquideas <-"fab fa-pagelines"
icono_generos <-"fas fa-seedling"
icono_especies <-"fas fa-leaf"
```

```{r carga_datos, message=FALSE, warning=FALSE}
# Carga de la capa de orquídeas (familia Orchidaceae)
orquideas <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/orchidaceae-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )

# Asignación del sistema de coordenadas
st_crs(orquideas) <- 4326


# Carga de la capa de cantones
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )

# Carga de la capa de provincias
provincias <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
    quiet = TRUE
  )
```

```{r limpieza, message=FALSE, warning=FALSE}
# Cruce espacial con la tabla de provincias y cantones
orquideas <-
  orquideas %>%
  st_join(cantones["provincia"]) %>%
  st_join(cantones["canton"])


# Descartar registros con alta incertidumbre 
orquideas <-
  orquideas %>%
  filter(coordinateUncertaintyInMeters <= 1000) %>%
  mutate(eventDate = as.Date(eventDate, "%Y-%m-%d"))
```

```{r eliminar_NA}
# Eliminar vacios y NA
orquideas <-
  orquideas %>%
  filter(!is.na(species) & species != "") 
```

```{r grupo_especies, message=FALSE, warning=FALSE}
#crear grupo de especies 
orquideas_especies <- 
  orquideas %>% 
  group_by(species) %>% 
  summarize(n_especies = n())
```

```{r grupo_generos, message=FALSE, warning=FALSE}
# crear grupo de generos 
orquideas_generos <- 
  orquideas %>% 
  group_by(genus) %>% 
  summarize(n_generos = n())
```

```{r orquideas_mayores}
# crear un data frame sobre las orquideas con mayores registros 
orquideas_mayores <-
  orquideas_especies %>%
  st_drop_geometry() %>%
  filter(
    species == "Epidendrum radicans" |
      species == "Epidendrum exasperatum" |
      species == "Elleanthus tonduzii" |
      species == "Elleanthus hymenophorus" |
      species == "Pleurothallis ruscifolia" |
      species == "Maxillaria dendrobioides" |
      species == "Elleanthus glaucophyllus" |
      species == "Habenaria monorrhiza" |
      species == "Epidendrum anoglossum" |
      species == "Epidendrum centropetalum"
  ) %>%
  arrange(desc(n_especies))

```

```{r orquiedas_menores}
# crear un data frame sobre las orquideas con menos registros
orquideas_menores <-
  orquideas_especies %>%
  st_drop_geometry() %>%
  filter(species != "Epidendrum radicans") %>%
  filter(species != "Epidendrum exasperatum") %>%
  filter(species != "Elleanthus tonduzii") %>%
  filter(species != "Elleanthus hymenophorus") %>%
  filter(species != "Pleurothallis ruscifolia") %>%
  filter(species != "Maxillaria dendrobioides") %>%
  filter(species != "Elleanthus glaucophyllus") %>%
  filter(species != "Habenaria monorrhiza") %>%
  filter(species != "Epidendrum anoglossum") %>%
  filter(species != "Epidendrum centropetalum") %>%
  arrange(desc(n_especies))
```

```{r calculo_orquiedas_restantes}
# Hacer el calculo de la suma de las orquideas restantes  
cal_orquideas_menores <- apply(orquideas_menores[,2], 2, sum)
```

```{r nueva_dataframe}
# Definir una variable vacía
sum_orquideas_menores <- NULL

# Crear las columnas
sum_orquideas_menores$species <- "Otras"
sum_orquideas_menores$n_especies <- 19313

# Convertirloa a data.frame
sum_orquideas_menores <- data.frame(sum_orquideas_menores, stringsAsFactors = FALSE)
```

```{r unir_dataframe}
# unir los dos data frame
orquideas_unidas <- rbind(orquideas_mayores, sum_orquideas_menores)
```


```{r capa_alt_prueba}
# Obtención de la capa de altitud
alt <- getData(
  "worldclim",
  var = "alt",
  res = .5,
  lon = -84,
  lat = 10
)


# Capa de altitud recortada para los límites exactos de Costa Rica
altitud <-
  alt %>%
  crop(cantones) %>%
  mask(cantones)

```


Registros de presencia
======================================================================

Row {data-height=200}
-----------------------------------------------------------------------

### Cantidad total de registros de presencia {.value-box}
```{r valueBox_orquideas}
valueBox(value = nrow(orquideas),
         caption = "Cantidad total de registros de presencia",
         icon = icono_orquideas,
         color = colores_orquiedas)
```

### Cantidad total de géneros {.value-box}
```{r valueBox_generos}
valueBox(value = nrow(orquideas_generos),
         caption = "Cantidad total de géneros",
         icon = icono_generos,
         color = colores_generos)
```

### Cantidad total de especies {.value-box}
```{r valueBox_especies}
valueBox(value = nrow(orquideas_especies),
         caption = "Cantidad total de especies",
         icon = icono_especies,
         color = colores_especies)
```

Row {data-height=800}
-----------------------------------------------------------------------

### Tabla de registros de presencia 

```{r tabla_registros, message=FALSE, warning=FALSE}
# Tabla de registros de presencia
orquideas %>%
  st_drop_geometry() %>%
  dplyr::select(species, stateProvince, canton, eventDate) %>%
  datatable(
    colnames = c("Especie",
                 "Provincia",
                 "Canton",
                 "Fecha"),
    options = list(
      searchHighlight = TRUE,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )
```

### Gráfico pastel

```{r grafico_pastel, message=FALSE, warning=FALSE}
#grafico pastel 
grafico_pastel <-
  plot_ly(
    orquideas_unidas,
    labels = ~ species,
    values = ~ n_especies,
    type = "pie",
    textposition = "inside",
    textinfo = "label+percent",
    insidetextorientation = "auto",
    insidetextfont = list(color = "#FFFFFF"),
    marker = list(colors = colors),
    showlegend = FALSE
  ) %>%
  layout(
    title = "Cantidad de registros para cada especie de orquidea",
    xaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    ),
    yaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    )
  )

config (grafico_pastel, locale = "es")
```

Mapa Leaflet
=======================================================================


-----------------------------------------------------------------------

### Mapa de distribucion

```{r}
# Generación de un raster con celda = cantidad de especies

# Plantilla de raster
raster_plantilla <-
  altitud %>%
  aggregate(fact = 16)

# Rasterización
orquideas_raster_especies <-
  rasterize(filter(orquideas),
            raster_plantilla,
            field = "species",
            fun = function(x, ...) {length(unique(na.omit(x)))})

# Paleta de colores
pal <- colorNumeric(
  c("#f7f7f7","#2171b5", "#fec44f", "#e41a1c"), 
  values(orquideas_raster_especies), 
  na.color = "transparent"
)

# Mapeo
plot(
  orquideas_raster_especies,
  col =  c("#f7f7f7","#2171b5", "#fec44f", "#e41a1c"),
  ext = extent(280000, 660000, 880000, 1250000),
  main = "Cantidad de registros de mamíferos",
  axes = TRUE
)

plot(provincias$geometry,
     add = TRUE)
```


```{r}
# Mapa de registros de presencia
orquideas %>%
  select(stateProvince,
         canton,
         species,
         eventDate,
         decimalLongitude,
         decimalLatitude) %>%
  leaflet() %>%
  setView(lng = -84.0,
          lat = 10.0,
          zoom = 8) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addRasterImage(
    orquideas_raster_especies,
    colors = pal,
    opacity = 0.9,
    group = "Capa raster"
  ) %>%
  addLegend(
    pal = pal,
    values = values(orquideas_raster_especies),
    position = "bottomleft",
    title = "Especies por cada celda",
    group = "Capa raster"
  ) %>%
  addCircleMarkers(
    stroke = F,
    radius = 4,
    fillColor = 'red',
    fillOpacity = 0.8,
    popup = paste(
      orquideas$stateProvince,
      orquideas$canton,
      orquideas$species,
      orquideas$eventDate,
      orquideas$decimalLongitude,
      orquideas$decimalLatitude,
      sep = '
' ), clusterOptions = markerClusterOptions(), group = "orquideas" ) %>% addLayersControl( baseGroups = c("OpenStreetMap", "Imágenes de ESRI"), overlayGroups = c("orquideas", "Capa raster") ) %>% addResetMapButton() %>% addMouseCoordinates() ``` Extras ======================================================================= ----------------------------------------------------------------------- ### Gráfico pastel extra Profe, como en el grafico pastel el campo de "Otras" tiene muchos registros y caso no deja ver a los demas datos, aqui hay un grafico solo con las 10 especies mas representativas de Costa Rica. Muchas gracias ```{r grafico_pastel_extra, message=FALSE, warning=FALSE} #grafico pastel grafico_pastel <- plot_ly( orquideas_mayores, labels = ~ species, values = ~ n_especies, type = "pie", textposition = "inside", textinfo = "label+percent", insidetextorientation = "auto", insidetextfont = list(color = "#FFFFFF"), marker = list(colors = colors), showlegend = FALSE ) %>% layout( title = "Cantidad de registros para cada especie de orquidea", xaxis = list( showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE ), yaxis = list( showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE ) ) config (grafico_pastel, locale = "es")